package com.hmall.common.utils;

public class UserContext {
    private static final ThreadLocal<Long> tl = new ThreadLocal<>();

    /**
     * 保存当前登录用户信息到ThreadLocal
     * @param userId 用户id
     */
    public static void setUser(Long userId) {
        tl.set(userId);
    }

    /**
     * 获取当前登录用户信息
     * @return 用户id
     */
    public static Long getUser() {
        return tl.get();
    }
    
    /**
     * 获取当前登录用户信息，如果为空则返回默认值
     * @param defaultUserId 默认用户ID
     * @return 用户id
     */
    public static Long getUser(Long defaultUserId) {
        Long userId = tl.get();
        return userId != null ? userId : defaultUserId;
    }

    /**
     * 获取当前登录用户信息，以字符串形式返回
     * @return 用户id字符串
     */
    public static String getUserString() {
        Long userId = tl.get();
        return userId != null ? userId.toString() : null;
    }

    /**
     * 移除当前登录用户信息
     */
    public static void removeUser(){
        tl.remove();
    }
}